var result = {success: false};
var preferences = null;
var dataElement = null;

function GetData()
{
	var url = 'http://club-lukoil.ru/cabinet/';
	try
	{
		var content = AnyBalance.requestGet(url);
		if($(content).find('.button_exit').length == 0)
		{
			var sessionId = $(content).find('#sessid').first().attr('value');
			if(!sessionId)
			{
				throw new AnyBalance.Error('Не удалось найти идентификатор сессии');
			}
			content = AnyBalance.requestPost(url, {
				LOGIN: preferences.login,
				PASS: preferences.password,
				'sessid': sessionId
			});
		}
		if(!content)
		{
			throw new AnyBalance.Error('Неверный ответ сервера.');
		}
		return content;
	}
	catch(e)
	{
		if(e.skip)
		{
			throw e;
		}
		throw new AnyBalance.Error('Не удалось получить данные: ' + e.message);
	}
}

function SetCounters()
{
	result['__tariff'] = $('span:contains("Ваш статус в Программе:")').parent().contents().last().text();
	if(AnyBalance.isAvailable('BALANCE'))
	{
		result['BALANCE'] = parseInt($('span:contains("Баланс Ваших Баллов:")').parent().contents().last().text());
	}
	if(AnyBalance.isAvailable('CARD_TYPE'))
	{
		result['CARD_TYPE'] = $('span:contains("Ваша Карта:")').parent().contents().last().text();
	}
	if(AnyBalance.isAvailable('REGION'))
	{
		result['REGION'] = $('span:contains("Регион Программы:")').parent().contents().last().text();
	}
	if(AnyBalance.isAvailable('NAME'))
	{
		var name = $('h1:contains("Здравствуйте, ")').text().split(', ')[1];
		result['NAME'] = name.charAt(0).toUpperCase() + name.slice(1).toLowerCase();
	}
}

function ParseData(html)
{
	$(html).not('script').appendTo(dataElement);
}

function LoadPreferences()
{
	preferences = AnyBalance.getPreferences();
	if(!preferences.login || preferences.login == '')
	{
		throw new AnyBalance.Error('Введите логин');
	}
	if(!preferences.password || preferences.password == '')
	{
		throw new AnyBalance.Error('Введите пароль');
	}
}

function Init()
{
	AnyBalance.setDefaultCharset('utf-8');
	dataElement = $('<data></data>');
	dataElement.appendTo('body');
	LoadPreferences();
}

function main()
{
	Init();
	try
	{
		ParseData(GetData());
		var errorMessage = $('p.err').text();
		if(errorMessage)
		{
			throw new AnyBalance.Error(errorMessage);
		}
		SetCounters();
	}
	finally
	{
		dataElement.remove();
	}
	result['success'] = true;
	AnyBalance.setResult(result);
}